home *** CD-ROM | disk | FTP | other *** search
- 100 ' *********************************************************************
- 110 ' VIEWER.BAS VERSION 1.01 MAY 14, 1985 (C) 1985
- 120 ' *********************************************************************
- 130 ' BY Marshall W. Magee
- 140 ' *********************************************************************
- 150 ' MAGEE ENTERPRISES
- 160 ' 6577 Peachtree Industrial Blvd.
- 170 ' Norcross, Georgia 30092-3796
- 180 ' CompuServe [70167,2200]
- 190 ' (404) 447-9410
- 200 ' *********************************************************************
- 210 ' This program supports ANSI Color control sequences and sound.
- 220 ' It handles ANSI function calls CUP, HVP, SGR and ED.
- 230 ' *********************************************************************
- 240 '
- 250 ON ERROR GOTO 1870
- 260 DIM CODES(20)
- 270 SCREEN 0,0,0
- 280 CLOSE
- 290 WIDTH 80
- 300 HIGH=0 : UNDER=0 : BLINK=0 : REVERSE=0 : INVISIBLE=0
- 310 FORE=7 : BACK=0
- 320 LINES=0
- 330 COLOR FORE,BACK,0
- 340 CLS
- 350 COLOR 6
- 360 PRINT TAB(15);" ANSI ";
- 370 COLOR 11: PRINT "C"; : COLOR 5 : PRINT "O";
- 380 COLOR 12: PRINT "L"; : COLOR 3 : PRINT "O";
- 390 COLOR 2 : PRINT "R";
- 400 COLOR 6
- 410 PLAY "MBL24T250ABCDEFG" : PRINT " & Music File Viewer"
- 420 PRINT TAB(15);"**************************************************"
- 430 PRINT TAB(15);"* VIEWER.BAS VERSION 1.01 (C) 1985 *"
- 440 PRINT TAB(15);"**************************************************"
- 450 PRINT TAB(15);"* By Marshall W. Magee *"
- 460 PRINT TAB(15);"**************************************************"
- 470 PRINT TAB(15);"* MAGEE ENTERPRISES *"
- 480 PRINT TAB(15);"* 6577 Peachtree Industrial Blvd. *"
- 490 PRINT TAB(15);"* Norcross, Georgia 30092-3796 *"
- 500 PRINT TAB(15);"* CompuServe [70167,2200] *"
- 510 PRINT TAB(15);"* (404) 447-9410 *"
- 520 PRINT TAB(15);"**************************************************"
- 530 PRINT TAB(15);"* Please send any comments concerning VIEWER to *"
- 540 PRINT TAB(15);"* the address above. Suggested donation: $5.00 *"
- 550 PRINT TAB(15);"**************************************************"
- 560 COLOR FORE,BACK,0
- 570 PRINT
- 580 PRINT
- 590 LINE INPUT "Enter name of file to view (ENTER to end) =>",FILENAME$
- 600 IF LEN(FILENAME$)=0 THEN END
- 610 OPEN FILENAME$ FOR INPUT AS #1
- 620 PRINT "----------------------------- Now Printing file ------------------------"
- 630 COLOR 19
- 640 PRINT " Press ESC to quit while printing "
- 650 COLOR FORE
- 660 PRINT "------------------------------------------------------------------------"
- 670 IF EOF(1) THEN PRINT:LINE INPUT"Finished..Press ENTER to continue";ANSWER$ : GOTO 270
- 680 '
- 690 ' Check for 22 lines to help determine break
- 700 '
- 710 IF LINES<22 THEN 820
- 720 LINES=0
- 730 COLOR 30,1
- 740 PRINT "Continue (Y),N ? ";
- 750 COLOR FORE,BACK
- 760 LINE INPUT "";ANSWER$
- 770 IF LEN(ANSWER$)=0 OR LEFT$(ANSWER$,1)="Y" OR LEFT$(ANSWER$,1)="y" THEN 820
- 780 GOTO 270
- 790 '---------------------------------------------------------------------
- 800 ' Load one Character from file and check for special codes
- 810 '---------------------------------------------------------------------
- 820 C=ASC(INPUT$(1,#1))
- 830 IF C=12 OR C=141 THEN CLS : GOTO 670
- 840 IF C=27 THEN 930
- 850 IF C=13 THEN 670
- 860 IF C=10 THEN PRINT : LINES=LINES+1 : GOTO 670
- 870 PRINT CHR$(C);
- 880 IN$=INKEY$ : IF IN$=CHR$(27) THEN 270
- 890 GOTO 670
- 900 '---------------------------------------------------------------------
- 910 ' ESCape character found now check for "ESC [" sequence
- 920 '---------------------------------------------------------------------
- 930 C$=INPUT$(1,#1)
- 940 IF C$<>"[" THEN PRINT CHR$(27);C$ : GOTO 670
- 950 OPERANDS=1
- 960 CODE$=INPUT$(1,#1) : C=ASC(CODE$)
- 970 '---------------------------------------------------------------------
- 980 ' Check for numbers
- 990 '---------------------------------------------------------------------
- 1000 IF C<48 OR C>57 THEN 1620
- 1010 '
- 1020 ' Load all the operands
- 1030 '
- 1040 CODE1$=CODE$
- 1050 CODE2$=INPUT$(1,#1)
- 1060 IF ASC(CODE2$)>57 THEN 1790
- 1070 TERM$=INPUT$(1,#1)
- 1080 CODES(OPERANDS)=VAL(CODE1$+CODE2$)
- 1090 OPERANDS=OPERANDS+1
- 1100 IF TERM$<>";" THEN 1160
- 1110 CODE1$=INPUT$(1,#1)
- 1120 GOTO 1050
- 1130 '------------------------------------------------------------------------
- 1140 ' ESC [#;...#m
- 1150 '------------------------------------------------------------------------
- 1160 IF TERM$<>"m" THEN 1230
- 1170 FOR LOOP%=1 TO OPERANDS-1
- 1180 GOSUB 1280
- 1190 NEXT
- 1200 '------------------------------------------------------------------------
- 1210 ' ESC [#;#f or ESC [#;#H Horizontal and Vertical Position
- 1220 '------------------------------------------------------------------------
- 1230 IF TERM$="f" OR TERM$="H" THEN LOCATE CODES(1)+1,CODES(2)+1
- 1240 GOTO 670
- 1250 '-----------------------------------------------------------------------
- 1260 ' Changes color information as to SGR function
- 1270 '-----------------------------------------------------------------------
- 1280 CODE=CODES(LOOP%)
- 1290 IF CODE <> 0 THEN 1330
- 1300 HIGH=0 : UNDER=0 : BLINK=0 : REVERSE=0 : INVISIBLE=0
- 1310 FORE=7 : BACK=0
- 1320 GOTO 1500
- 1330 IF CODE = 1 THEN HIGH=1 : GOTO 1500
- 1340 IF CODE = 4 THEN UNDER=1 : GOTO 1500
- 1350 IF CODE = 5 THEN BLINK=1 : GOTO 1500
- 1360 IF CODE = 7 THEN REVERSE=1 : GOTO 1500
- 1370 IF CODE = 8 THEN INVISIBLE=1 : GOTO 1500
- 1380 IF CODE<30 OR CODE>39 THEN 1440
- 1390 FORE=CODE-30
- 1400 IF FORE=1 THEN FORE=4 : GOTO 1500
- 1410 IF FORE=3 THEN FORE=6 : GOTO 1500
- 1420 IF FORE=4 THEN FORE=1 : GOTO 1500
- 1430 IF FORE=6 THEN FORE=3 : GOTO 1500
- 1440 IF CODE<40 OR CODE>49 THEN 1500
- 1450 BACK=CODE-40
- 1460 IF BACK=1 THEN BACK=4 : GOTO 1500
- 1470 IF BACK=3 THEN BACK=6 : GOTO 1500
- 1480 IF BACK=4 THEN BACK=1 : GOTO 1500
- 1490 IF BACK=6 THEN BACK=3
- 1500 FOREGROUND = FORE
- 1510 BACKGROUND = BACK
- 1520 IF HIGH THEN FOREGROUND = FOREGROUND + 8
- 1530 IF BLINK THEN FOREGROUND = FOREGROUND + 16
- 1540 IF UNDER THEN FOREGROUND=1
- 1550 IF REVERSE THEN FOREGROUND=0 : BACKGROUND=7
- 1560 IF INVISIBLE THEN FOREGROUND=BACKGROUND
- 1570 COLOR FOREGROUND,BACKGROUND
- 1580 RETURN
- 1590 '---------------------------------------------------------------------
- 1600 ' One Letter Commands
- 1610 '---------------------------------------------------------------------
- 1620 IF CODE$="H" OR CODE$="f" THEN LOCATE 1,1 : GOTO 670
- 1630 '*********************************************************************
- 1640 ' Play Music
- 1650 ' No other one letter commands so it must be music information
- 1660 '*********************************************************************
- 1670 MUSIC$=CODE$
- 1680 IF INSTR(MUSIC$,CHR$(14)) THEN 1740
- 1690 C$=INPUT$(1,#1)
- 1700 IF C$=CHR$(14) THEN 1740 ' CHECK FOR CONTROL-N
- 1710 MUSIC$=MUSIC$+C$
- 1720 IF EOF(1) THEN 670
- 1730 GOTO 1690
- 1740 PLAY MUSIC$
- 1750 GOTO 670
- 1760 '---------------------------------------------------------------------
- 1770 ' ONE NUMBER AND ONE LETTER COMMANDS
- 1780 '---------------------------------------------------------------------
- 1790 IF CODE1$+CODE2$ = "2J" THEN CLS: GOTO 670
- 1800 PRINT : PRINT
- 1810 PRINT "Special Command found that is NOT supported!! =>";CODE1$+CODE2$
- 1820 PRINT "Remove code to continue..."
- 1830 END
- 1840 '
- 1850 ' ERROR CATCHING
- 1860 '
- 1870 IF ERR<>53 THEN 1920
- 1880 PRINT : PRINT :PRINT : COLOR 12
- 1890 PRINT CHR$(7);" File '";FILENAME$;"' Not Found "
- 1900 LINE INPUT "Press ENTER to Continue";ANSWER$
- 1910 RESUME 270
- 1920 PRINT "ERROR #";ERR;" In Statement ";ERL
- 1930 END